p1(0) -> 0
p1(s1(x)) -> x
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
plus2(s1(x), y) -> s1(plus2(p1(s1(x)), y))
plus2(x, s1(y)) -> s1(plus2(x, p1(s1(y))))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
↳ QTRS
↳ DependencyPairsProof
p1(0) -> 0
p1(s1(x)) -> x
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
plus2(s1(x), y) -> s1(plus2(p1(s1(x)), y))
plus2(x, s1(y)) -> s1(plus2(x, p1(s1(y))))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
DIV2(div2(x, y), z) -> TIMES2(y, z)
PLUS2(s1(x), y) -> PLUS2(p1(s1(x)), y)
PLUS2(s1(x), y) -> P1(s1(x))
QUOT3(x, 0, s1(z)) -> DIV2(x, s1(z))
PR2(x, s1(s1(y))) -> DIVIDES2(s1(s1(y)), x)
DIVIDES2(y, x) -> TIMES2(div2(x, y), y)
DIVIDES2(y, x) -> EQ2(x, times2(div2(x, y), y))
PLUS2(x, s1(y)) -> PLUS2(x, p1(s1(y)))
PLUS2(s1(x), y) -> PLUS2(x, y)
TIMES2(s1(x), y) -> PLUS2(y, times2(x, y))
QUOT3(s1(x), s1(y), z) -> QUOT3(x, y, z)
EQ2(s1(x), s1(y)) -> EQ2(x, y)
PLUS2(x, s1(y)) -> P1(s1(y))
DIV2(div2(x, y), z) -> DIV2(x, times2(y, z))
TIMES2(s1(x), y) -> TIMES2(x, y)
PR2(x, s1(s1(y))) -> IF3(divides2(s1(s1(y)), x), x, s1(y))
DIV2(x, y) -> QUOT3(x, y, y)
IF3(false, x, y) -> PR2(x, y)
PRIME1(s1(s1(x))) -> PR2(s1(s1(x)), s1(x))
DIVIDES2(y, x) -> DIV2(x, y)
p1(0) -> 0
p1(s1(x)) -> x
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
plus2(s1(x), y) -> s1(plus2(p1(s1(x)), y))
plus2(x, s1(y)) -> s1(plus2(x, p1(s1(y))))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
DIV2(div2(x, y), z) -> TIMES2(y, z)
PLUS2(s1(x), y) -> PLUS2(p1(s1(x)), y)
PLUS2(s1(x), y) -> P1(s1(x))
QUOT3(x, 0, s1(z)) -> DIV2(x, s1(z))
PR2(x, s1(s1(y))) -> DIVIDES2(s1(s1(y)), x)
DIVIDES2(y, x) -> TIMES2(div2(x, y), y)
DIVIDES2(y, x) -> EQ2(x, times2(div2(x, y), y))
PLUS2(x, s1(y)) -> PLUS2(x, p1(s1(y)))
PLUS2(s1(x), y) -> PLUS2(x, y)
TIMES2(s1(x), y) -> PLUS2(y, times2(x, y))
QUOT3(s1(x), s1(y), z) -> QUOT3(x, y, z)
EQ2(s1(x), s1(y)) -> EQ2(x, y)
PLUS2(x, s1(y)) -> P1(s1(y))
DIV2(div2(x, y), z) -> DIV2(x, times2(y, z))
TIMES2(s1(x), y) -> TIMES2(x, y)
PR2(x, s1(s1(y))) -> IF3(divides2(s1(s1(y)), x), x, s1(y))
DIV2(x, y) -> QUOT3(x, y, y)
IF3(false, x, y) -> PR2(x, y)
PRIME1(s1(s1(x))) -> PR2(s1(s1(x)), s1(x))
DIVIDES2(y, x) -> DIV2(x, y)
p1(0) -> 0
p1(s1(x)) -> x
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
plus2(s1(x), y) -> s1(plus2(p1(s1(x)), y))
plus2(x, s1(y)) -> s1(plus2(x, p1(s1(y))))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
EQ2(s1(x), s1(y)) -> EQ2(x, y)
p1(0) -> 0
p1(s1(x)) -> x
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
plus2(s1(x), y) -> s1(plus2(p1(s1(x)), y))
plus2(x, s1(y)) -> s1(plus2(x, p1(s1(y))))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
EQ2(s1(x), s1(y)) -> EQ2(x, y)
POL( s1(x1) ) = x1 + 3
POL( EQ2(x1, x2) ) = 3x2 + 3
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
p1(0) -> 0
p1(s1(x)) -> x
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
plus2(s1(x), y) -> s1(plus2(p1(s1(x)), y))
plus2(x, s1(y)) -> s1(plus2(x, p1(s1(y))))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
↳ QDP
PLUS2(s1(x), y) -> PLUS2(x, y)
PLUS2(s1(x), y) -> PLUS2(p1(s1(x)), y)
PLUS2(x, s1(y)) -> PLUS2(x, p1(s1(y)))
p1(0) -> 0
p1(s1(x)) -> x
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
plus2(s1(x), y) -> s1(plus2(p1(s1(x)), y))
plus2(x, s1(y)) -> s1(plus2(x, p1(s1(y))))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
PLUS2(s1(x), y) -> PLUS2(x, y)
PLUS2(s1(x), y) -> PLUS2(p1(s1(x)), y)
PLUS2(x, s1(y)) -> PLUS2(x, p1(s1(y)))
POL( s1(x1) ) = 2x1 + 2
POL( p1(x1) ) = max{0, x1 - 2}
POL( PLUS2(x1, x2) ) = max{0, 3x1 + 2x2 - 2}
p1(s1(x)) -> x
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
↳ QDP
↳ QDP
p1(0) -> 0
p1(s1(x)) -> x
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
plus2(s1(x), y) -> s1(plus2(p1(s1(x)), y))
plus2(x, s1(y)) -> s1(plus2(x, p1(s1(y))))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
TIMES2(s1(x), y) -> TIMES2(x, y)
p1(0) -> 0
p1(s1(x)) -> x
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
plus2(s1(x), y) -> s1(plus2(p1(s1(x)), y))
plus2(x, s1(y)) -> s1(plus2(x, p1(s1(y))))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
TIMES2(s1(x), y) -> TIMES2(x, y)
POL( s1(x1) ) = x1 + 1
POL( TIMES2(x1, x2) ) = 2x1 + 3x2 + 2
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
↳ QDP
p1(0) -> 0
p1(s1(x)) -> x
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
plus2(s1(x), y) -> s1(plus2(p1(s1(x)), y))
plus2(x, s1(y)) -> s1(plus2(x, p1(s1(y))))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
QUOT3(x, 0, s1(z)) -> DIV2(x, s1(z))
QUOT3(s1(x), s1(y), z) -> QUOT3(x, y, z)
DIV2(div2(x, y), z) -> DIV2(x, times2(y, z))
DIV2(x, y) -> QUOT3(x, y, y)
p1(0) -> 0
p1(s1(x)) -> x
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
plus2(s1(x), y) -> s1(plus2(p1(s1(x)), y))
plus2(x, s1(y)) -> s1(plus2(x, p1(s1(y))))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
DIV2(div2(x, y), z) -> DIV2(x, times2(y, z))
Used ordering: Polynomial Order [17,21] with Interpretation:
QUOT3(x, 0, s1(z)) -> DIV2(x, s1(z))
QUOT3(s1(x), s1(y), z) -> QUOT3(x, y, z)
DIV2(x, y) -> QUOT3(x, y, y)
POL( QUOT3(x1, ..., x3) ) = 3x1 + 1
POL( plus2(x1, x2) ) = max{0, 2x1 - 3}
POL( 0 ) = 3
POL( s1(x1) ) = x1
POL( DIV2(x1, x2) ) = 3x1 + 1
POL( times2(x1, x2) ) = max{0, -1}
POL( div2(x1, x2) ) = 3x1 + 1
POL( p1(x1) ) = max{0, -3}
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
QUOT3(s1(x), s1(y), z) -> QUOT3(x, y, z)
QUOT3(x, 0, s1(z)) -> DIV2(x, s1(z))
DIV2(x, y) -> QUOT3(x, y, y)
p1(0) -> 0
p1(s1(x)) -> x
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
plus2(s1(x), y) -> s1(plus2(p1(s1(x)), y))
plus2(x, s1(y)) -> s1(plus2(x, p1(s1(y))))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
QUOT3(s1(x), s1(y), z) -> QUOT3(x, y, z)
Used ordering: Polynomial Order [17,21] with Interpretation:
QUOT3(x, 0, s1(z)) -> DIV2(x, s1(z))
DIV2(x, y) -> QUOT3(x, y, y)
POL( QUOT3(x1, ..., x3) ) = 3x1
POL( 0 ) = 0
POL( s1(x1) ) = x1 + 1
POL( DIV2(x1, x2) ) = 3x1
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
QUOT3(x, 0, s1(z)) -> DIV2(x, s1(z))
DIV2(x, y) -> QUOT3(x, y, y)
p1(0) -> 0
p1(s1(x)) -> x
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
plus2(s1(x), y) -> s1(plus2(p1(s1(x)), y))
plus2(x, s1(y)) -> s1(plus2(x, p1(s1(y))))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
QUOT3(x, 0, s1(z)) -> DIV2(x, s1(z))
Used ordering: Polynomial Order [17,21] with Interpretation:
DIV2(x, y) -> QUOT3(x, y, y)
POL( QUOT3(x1, ..., x3) ) = 2x1 + x2
POL( s1(x1) ) = 0
POL( 0 ) = 3
POL( DIV2(x1, x2) ) = 2x1 + x2
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
DIV2(x, y) -> QUOT3(x, y, y)
p1(0) -> 0
p1(s1(x)) -> x
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
plus2(s1(x), y) -> s1(plus2(p1(s1(x)), y))
plus2(x, s1(y)) -> s1(plus2(x, p1(s1(y))))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
PR2(x, s1(s1(y))) -> IF3(divides2(s1(s1(y)), x), x, s1(y))
IF3(false, x, y) -> PR2(x, y)
p1(0) -> 0
p1(s1(x)) -> x
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
plus2(s1(x), y) -> s1(plus2(p1(s1(x)), y))
plus2(x, s1(y)) -> s1(plus2(x, p1(s1(y))))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
PR2(x, s1(s1(y))) -> IF3(divides2(s1(s1(y)), x), x, s1(y))
Used ordering: Polynomial Order [17,21] with Interpretation:
IF3(false, x, y) -> PR2(x, y)
POL( IF3(x1, ..., x3) ) = 3x3 + 1
POL( eq2(x1, x2) ) = max{0, -3}
POL( 0 ) = 1
POL( divides2(x1, x2) ) = max{0, 2x2 - 3}
POL( times2(x1, x2) ) = 2x1 + 1
POL( div2(x1, x2) ) = x2 + 2
POL( PR2(x1, x2) ) = 2x2 + 1
POL( true ) = 1
POL( false ) = 1
POL( plus2(x1, x2) ) = 3x1 + 1
POL( quot3(x1, ..., x3) ) = max{0, -3}
POL( s1(x1) ) = 3x1 + 1
POL( p1(x1) ) = max{0, -2}
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
IF3(false, x, y) -> PR2(x, y)
p1(0) -> 0
p1(s1(x)) -> x
plus2(x, 0) -> x
plus2(0, y) -> y
plus2(s1(x), y) -> s1(plus2(x, y))
plus2(s1(x), y) -> s1(plus2(p1(s1(x)), y))
plus2(x, s1(y)) -> s1(plus2(x, p1(s1(y))))
times2(0, y) -> 0
times2(s1(0), y) -> y
times2(s1(x), y) -> plus2(y, times2(x, y))
div2(0, y) -> 0
div2(x, y) -> quot3(x, y, y)
quot3(0, s1(y), z) -> 0
quot3(s1(x), s1(y), z) -> quot3(x, y, z)
quot3(x, 0, s1(z)) -> s1(div2(x, s1(z)))
div2(div2(x, y), z) -> div2(x, times2(y, z))
eq2(0, 0) -> true
eq2(s1(x), 0) -> false
eq2(0, s1(y)) -> false
eq2(s1(x), s1(y)) -> eq2(x, y)
divides2(y, x) -> eq2(x, times2(div2(x, y), y))
prime1(s1(s1(x))) -> pr2(s1(s1(x)), s1(x))
pr2(x, s1(0)) -> true
pr2(x, s1(s1(y))) -> if3(divides2(s1(s1(y)), x), x, s1(y))
if3(true, x, y) -> false
if3(false, x, y) -> pr2(x, y)